package com.settlement.system.service;

import com.settlement.system.common.exception.ServiceException;
import com.settlement.system.model.entity.common.CommonPlugIn;
import com.settlement.system.model.entity.common.SinglePage;

import java.util.List;
import java.util.Map;


/**
 * 收退款页面插件
 *
 * @author Ximi
 * @since 2020/08/21
 */
public interface RrPlugInService {

    /**
     * 获取记账项目的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getRecordAccountProjectCount(Map<String, Object> params) throws ServiceException;

    /**
     * 获取记账项目
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getRecordAccountProject(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;


    /**
     * 获取入账主题的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getNcEnterAccountBodyCount(Map<String, Object> params) throws ServiceException;

    /**
     * 获取供应商名称的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getWpRrVendorCount(Map<String, Object> params) throws ServiceException;

    /**
     * 获取唯品退供差异账单编码的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getWpRdBillCodeCount(Map<String, Object> params) throws ServiceException;

    /**
     * 获取唯品退供差异账单编码
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getWpRdBillCode(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;

    /**
     * 获取入账主题
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getNcEnterAccountBody(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;

    /**
     * 获取供应商名称
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getWpRrVendor(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;

    /**
     * 获取账单类型的数量
     * @param params
     * @return
     * @throws ServiceException
     */
    Integer getBillTypeCount(Map<String, Object> params) throws ServiceException;

    Integer getVoucherTypeCount(Map<String, Object> params) throws ServiceException;

    /**
     * 获取账单类型
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    List<CommonPlugIn> getBillType(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;

    List<CommonPlugIn> getVoucherType(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;


    /**
     * 获取店铺的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getShopCount(Map<String, Object> params) throws ServiceException;



    /**
     * 获取线下打款账号的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getOfflineRemitAccountCount(Map<String, Object> params) throws ServiceException;



    /**
     * 获取店铺
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getShop(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;


    /**
     * 获取线下打款账号
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getOfflineRemitAccount(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;



    /**
     * 获取京东店铺的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getShopNameJdCount(Map<String, Object> params) throws ServiceException;

    /**
     * 获取京东店铺
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getShopNameJd(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;

    /**
     * 获取制单人的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getEditorCount(Map<String, Object> params) throws ServiceException;

    /**
     * 获取制单人
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getEditor(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;

    /**
     * 三级来源数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getThreeChannelNoCount(Map<String, Object> params) throws ServiceException;

    /**
     * 三级来源数量
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getThreeChannelNo(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;

    /**
     * 线下打款店铺账号的数量
     *
     * @param params
     * @return
     * @throws ServiceException
     */
    public Integer getOrShopAccountCount(Map<String, Object> params) throws ServiceException;

    /**
     * 线下打款店铺账号
     *
     * @param page
     * @param params
     * @param orderByField
     * @param orderBy
     * @return
     * @throws ServiceException
     */
    public List<CommonPlugIn> getOrShopAccount(SinglePage page, Map<String, Object> params, String orderByField, String orderBy) throws ServiceException;

}
